﻿using System;
using System.Collections.Generic;
using System.Text;

/*
 应用场景：对于我们的示例应用程序，我们将定义一个写入当前日期的类。但是，我们不希望它Console与
我们还将尽可能地允许抽象写入日期的机制，所以如果我们以后想换一个写入明天日期的版本，这将是一个瞬间
 */

namespace ConsoleApp_AutoFac
{
    //定义输出的接口
    public interface IOutPut
    {
        void Write(string content);
    }

    public class ConsoleOutPut : IOutPut
    {
        public void Write(string content)
        {
            Console.WriteLine(content);
        }
    }


    //定义一个写日期的接口
    public interface IDateWrite
    {
        void WriteDate();
    }

    //在构造函数是传入一个 IOutPut 对象，有她去具体输出信息
    public class TodayWrite : IDateWrite
    {
        IOutPut outPuter;
        public TodayWrite(IOutPut outPut)
        {
            outPuter = outPut;
        }

        public void WriteDate()
        {
            outPuter.Write(DateTime.Now.ToShortDateString());
        }
    }



    public interface IServiceTest
    {
        string ServiceName { get; }

        int Add(int a, int b);

    }

    public interface IServiceClose
    {
        Action Close { get; set; }
    }

    public class SimpleService : IServiceTest, IServiceClose
    {
        public string ServiceName => typeof(SimpleService).FullName;

        public Action Close { get; set; }

        public int Add(int a, int b)
        {
            return a + b;
        }
    }
}
